import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Shooter here.
 * 
 * @author (Gerardo Antonio Hernandez Garacia & Christian Israel Rodriguez Ahumada) 
 * @version (a version number or a date)
 */
public class Shooter extends Enemigo
{
    private GreenfootImage imagenDer[]= new GreenfootImage [11];
    private GreenfootImage imagenIzq[]= new GreenfootImage [11];
    private GreenfootImage ataIzq[]= new GreenfootImage [6];
    private GreenfootImage ataDer[]= new GreenfootImage [6];
    
    private GreenfootImage muerte[]= new GreenfootImage [8];
    private int dir;
    private int numIma;
    private int cont;
    private int numEsp;
    private static final int maxEsp=5;
    
    public Shooter()
    {
        dir=1;
        numIma=0;
        cont=0;
        this.CargarArregloIma();
        numEsp=0;
        
    }
    
    /**
     * Act - do whatever the Shooter wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
         World mundo= getWorld();
       numEsp= (numEsp+1)%maxEsp;
        if(numEsp!=0)
        return;
       this.mueve();
    }    
    
    /**
     * ARREGLO DE IMAGENES
     */
    
    public void CargarArregloIma()
    {
        for(int i=0; i<11; i++)
        {
        imagenDer[i]= (new GreenfootImage("CamDer"+(i)+".png"));
        imagenIzq[i]= (new GreenfootImage("CamIzq"+(i)+".png"));
        }
        for(int i=0; i<6; i++)
        {
        ataDer[i]= (new GreenfootImage("DispDer"+(i)+".png"));
        ataIzq[i]= (new GreenfootImage("DispIzq"+(i)+".png"));
        
        }
        
        for(int i=0; i<8; i++)
        muerte[i]= (new GreenfootImage("muerto"+(i)+".png"));
    }
    
    
    /**
     * METODO QUE PERMITE MOVER AL ENEMIGO
     */ 
     public void mueve()
    {
        World mundo= getWorld();
        GreenfootImage ima= getImage();
        if((dir==1 && cont<=15))
         {
                numIma = (numIma + 1) % 11;
                setImage( imagenDer[numIma] );
                move(5);
              
                cont++;
                if((this.getX()+(ima.getWidth()/2))>690)
                {
                cont=16;
                
                }
                
          }
          
          if (cont==16)
          {
          dir=2;
          DisparaBala();
          }
          
         if((dir==2 && cont>15 && cont<=31))
         {
                numIma = (numIma + 1) % 11;
                setImage( imagenIzq[numIma] );
                move(-5);
                
                cont++;
                
               if ((this.getX()-(ima.getWidth()/2)<2))
               {
               cont=32;
               
               }
         }
                
          
          
          if(cont==32)
          {
          
          cont=0;
          dir=1;
          DisparaBala();
        }
        
        
        if(isTouching(Bala.class))
        {
            Actor a=getOneIntersectingObject(Bala.class);
            
            Greenfoot.playSound("muereSoldado.wav");
            for(int i=0;i<8;i++)
            {
                numIma = (numIma + 1) % 8;
                setImage( muerte[numIma] );
                Greenfoot.delay(1);
            }
            mundo.removeObject(this);
            mundo.removeObject(a);
        }
        

    }
    
    /**
     * CREA UNA BALA DE ENEMIGO DEACUERDO A LA DIRECCION EN LA QUE ESTE MIRANDO
     */
    public void DisparaBala()
    {
        World mundo = getWorld();
        //Greenfoot.playSound("disparo.wav");
        if(dir==1)
        {
            for(int i=0;i<6;i++)
            {
             numIma = (numIma + 1) % 6;
             
             setImage( ataDer[numIma] );
            }
            setImage(imagenDer[0] );
        }
            
        else
        {
            for(int i=0;i<6;i++)
            {
             numIma = (numIma + 1) % 6;
             
             setImage( ataIzq[numIma] );
            }
             setImage(imagenIzq[0]);
        }
        
        
        BalaEne bala =new BalaEne(getX()+5,getY()+10,dir);
        mundo.addObject(bala, getX(), getY());
        
        
        
        
       
        
    }
    
}
